====== ABS - The Arch Building System ======


===== Introduction =====
Le Arch Build System (acronyme ABS) est utile pour  
  * Créer de nouveaux paquets lorsque le logiciel n'a pas encore été packagé 
  * Améliorer des paquets existant pour répondre à vos attentes (en ajoutant des options) 
  * Reconstruire son système entièrement avec des flags personalisés pour le compilateur 
ABS n'est pas nécessaire pour une utilisation courante de Arch Linux, mais il est utile aux gens qui veulent aller un peu plus loin. \\
Cet how-to essaie de donner une vue d'ensemble d'ABS et des packages sous Arch Linux. Ce n'est pas **la** référence. Pour une documentation plus complète, merci de lire les pages de manuel (''man'').

===== Installation =====

Pour utiliser ABS, il vous faudra ''cvsup'' et ''wget'' :
<code>pacman -Sy cvsup wget</code>
ou
<code>yaourt  -Sy cvsup wget</code>



===== L'arbre ABS =====

La première fois, lancez juste <code># abs</code>

L'arbre d'ABS se synchronisera et vous obtiendrez ceci :
<code>
|-
| -- base/
|-
|     ||-- autoconf/
|-
|     ||-- automake/
|-
|     ||-- ...
|-
| -- devel/
|-
| -- ...
|-
| -- extra/
|-
|      || -- deamons/
|-
|      ||      || -- acpid/
|-
|      ||      ||      || -- PKGBUILD
...    ...    ...    ...
</code>
L'arbre est placé dans **/var/abs** \\
L'arbre ABS a la même structure que la base de données de paquet:
  * Premier niveau : les catégories (x11/ lib / gnome ...)
  * Deuxième niveau : les paquets (rox / libsvg / nautilus ...)
  * Les fichiers utiles à la créations du paquet via le PKGBUILD

Il est conseillé de construire ses paquets dans un répertoire appelé 'local' dans **/var/abs**
Mais il est possible de les construire dans votre /home sans problèmes. Si vous modifiez des PKGBUILDS, fichiers dans l'arbre ils risquent d'être effacer à la prochaine synchronisation d'abs.

Le premier téléchargement de l'arbre est le plus long, ensuite il n'y aura que les mises à jour qui seront téléchargées.

Maintenant qu'on a ABS on va l'utiliser
 


===== Modification/Création d'un PKGBUILD =====
Tout d'abord, pour se familiariser avec la syntaxe des PKGBUILD il est sage de lire : [[howto:archlinux:pkgbuild|Description d'un pkgbuild]]\\
Prenons un exemple simple, nous allons reconstruire un paquet :\\
On le cherche dans l'arborescence :
<code bash>find /var/abs -name "truc"</code>
ou via slocate :
<code bash>slocate truc | grep ^/var/abs</code>
Ensuite on copie le répertoire du paquet dans /var/abs/local par exemple:
<code bash>cp /var/abs/extra/truc /var/abs/local</code>
on se déplace dans le répertoire créé :
<code bash>cd /var/abs/local/truc </code>
On peut ainsi éditer le PKGBUILD, les autres fichiers, en rajouter.\\
**__Note__**: Ne pas oublier de changer le n° de version de pkgrel
Pour compiler il vous faut absolument **pkgconfig** et **fakeroot**
<code bash>pacman -S pkgconfig fakeroot</code>
Ensuite on compile le tout à l'aide de la commande suivante :
<code bash>makepkg</code>
S'il n'y a pas d'erreurs, un fichier truc-$pkgver-$pkgrel-$arch.pkg.tar.gz est créé.\\
Pour l'installer :
<code bash>pacman -A truc-$pkgver-$pkgrel-$arch.pkg.tar.gz</code>
ou si une version antérieure existe :
<code bash>pacman -U truc-$pkgver-$pkgrel-$arch.pkg.tar.gz</code>

===== Méthode alternative - yaourt =====
Document référence: [[howto:archlinux:yaourt|yaourt]]\\
Un paquet installé depuis yaourt peut-être édité automatiquement pendant son installation, il est même possible d'exporter le répertoire avec le PKGBUILD et les fichiers nécessaires où l'on veut.
<code bash>yaourt -S truc --export /home/moi/repo</code>


===== Liens =====
  * [[http://wiki.archlinux.org/index.php/ABS_-_The_Arch_Build_System|Page originale]]\\
  * [[:howto:archlinux:pkgbuild| le fichier PKGBUILD]]
  * [[:howto:archlinux:man_pkgbuild|page man francophone de PKGBUILD.5]]
  * [[:howto:archlinux:archpackagingstandards|Standard de création de paquetage pour Arch Linux]]
  * [[http://archlinux.fr/yaourt/| Manuel Yaourt]]




====== Crédit ======


 --- //[[vincentxavier@archlinux.fr|vincentxavier]] 26/11/2006 19:02// \\
 --- //[[arnaud.fortier@archlinux.fr|warnaud]] 29/05/2007 18:00//